Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Investigation into Svelte re-write #1005

Draft
wants to merge 222 commits into
base: develop
Choose a base branch
from
Draft

Investigation into Svelte re-write #1005

wants to merge 222 commits into from

Conversation

chrisvire
Copy link
Member

No description provided.

@chrisvire chrisvire self-assigned this Nov 1, 2023
@chrisvire chrisvire force-pushed the develop branch 2 times, most recently from b3d0511 to eb5224e Compare February 29, 2024 17:05
@@ -51,5 +51,8 @@
"type": "module",
"volta": {
"node": "18.16.1"
},
"dependencies": {
"zod": "^3.23.8"
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Normally, all dependencies with Svelte-kit are devDependencies.

@@ -4,19 +4,31 @@

-->
<script lang="ts">
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

FYI, "Internationalized" is probably not needed in the component name. Everything should internationalized.

FyreByrd and others added 30 commits December 6, 2024 13:57
* Break bytesToHumanSize to lib/utils

* Display artifacts in product files

* Order builds correctly in display

* Break versionString into local function

* Show multiple, collapsable builds

* Close all but latest build by default

* Fix scrollbar

* Fix vertical layout

* X scroll for tables on mobile

* Paginate product files

* Show three builds per page by default

* Lighten active background on Pagination

* Collapse with click anywhere on header

* Don't collapse BuildArtifacts

* Add temporary fix for pluralization of product files

3 cheers for RegEx
* Add jobs for product creation, build, and publish

* Hook into jobs

* Add product creation to frontend

* Delete Product from BuildEngine

* Imitate correct build/publish failure output

* Handle post-build artifact creation

* Fix database write for artifacts

* Handle special artifact types in build

* Update ProductPublications in publish

* Move workflow creation call to products.create

Fix product validation

* Update Project DateActive

* Fix product form closing

* Handle no available product definitions

* Properly handle GOOGLE_PLAY_UPLOADED

- Tighten typing of environment
- Create bullmq job to get versionCode for GOOGLE_PLAY_UPLOADED, because XState won't properly handle asynchronous actions (ugh)

* Add environment population functions from DWKit

* Assign targets and env for build

* Assign targets and env for publish

* Add PWA properties to workflow definitions

* Fix environment merging

* remove async from workflow send

why was this async in the first place???
yes, it was my fault, but still, why???

* Add missing writes to WorkflowType

* Fix getWorkflowParameters with null Properties

* Use transitions for Project.DateActive

* Product icon in selector

* Remove unneeded TODO

* Investigate blank activity name at startup

The activityName was sometimes showing up blank. After investigating further, I was able to narrow it down to existing just at the start of a new product. This issue was sometimes persisting when the jobs backend was incorrect.

* Preserve artifact history

Had been deleting previous artifacts based on logic from S1 backend. This was determined to be unneeded, as the relevant code in S1 was determined to be unreachable after talking with @chrisvire

* Rename WorkflowContextBase to WorkflowInstanceContext

* Fix product creation workflow options init

* Create WorkflowInstance in database on create

* Log artifacts in build

* Fix lint errors in getWorkflowParameters

* Fix null description bug

* Fix check errors

* Fix errors in publish job

* Add close button to modal

* Don't close modal when going back from store

* Prevent cancel button from submitting form

* Fix styling in creation form

* Fix storeLanguage check in Product validation

* Remove store language from UI product creation

* Bump dev tsconfig for node-server to NodeNext

* Remove check for 'expired' status

* Switch updateProjectDateActive back

Switch updateProjectDateActive back to expected functionality based on S1.

I still don't fully understand under which conditions we would want to be running this. Right now I just have it to where it will execute each time a product is created, updated, or deleted.

* Remove duplicate function call

* Fix check errors with updateProjectDateActive

* Fix background color for visibility

* Add copy icon to copy project url

* Add link styling to console text

* Add close button to details modal

* Redirect to parent project on task submission

* More concise query for redirect

* Remove unnecessary IDs from task display

* Add background color to table header, and border to cells

* Create db wrappers for workflowInstances

Moved updateProjectDateActive to be handled by workflowInstances rather than products

* Configure option on SortTable to handle row click

Open artifact link in new tab when row is clicked.

* Add noStoresAvailable message to modal

* Make scope argument mandatory for get parameters

* Return params and env for debugging

* Rename targets and channel with "default" prefix

This is for clarification when looking at the job parameters

* Open console text in new tab

* Include Artifacts in Synchronize Data
* Add project create job

* Add Project Creation to UI

* Return Project.Id from databaseProxy/Projects#create

* Add TODO notes for Archive and Rebuild/Republish

* Rework new project page a bit, moved some code to common

* Add createMany for projects

* Import Projects

* Add front-end for archival and reactivation

* add project operation schema for archival etc.

* Rename verifyCanArchive to canModifyProject

* Handle project archival and reactivation

* Formatting

* Fix interaction with UserTasks

* Switch from goto to link

* Fix layout in new project page

* Return redirect if successfully created.

* Return redirect from import, fix issues

* Fix import layout, cancel redirects

* Fix check errors

* Hide repository URL if null

* Comment out task deletion on archival

Since this does not mimic S1 behavior, but would be desirable behavior in the future, I am commenting this out for now and instead opening an issue for discussion, per prior conversation on this topic.

* Fix project id for imports

* Remove unnecessary TODO

* Remove application type restrictions for new project

* Fix layout issue in add project

* Show basic errors and disable submit in add project

* Show basic errors and disable submit in import project

* Validate language tag for project creation and import

* Disable product creation if no project repo

- Disable `Add Product` button when parent project has no WorkflowProjectUrl. (WorkflowProjectUrl is set when project creation has been finished in BuildEngine).

* Remove unnecessary TODO

* Remove lastModified check

* Handle miscellaneous parse errors

* Reactive archival/reactivation

* Revert "Reactive archival/reactivation"

This reverts commit 3e653db.

* Rely on invalidation instead

* Change class:btn-disabled to disabled attr

* Fix project creation with other org

* Add extra error check for if system available

* Fix logic error in verifyCanViewAndEdit

project from db was called `org`
passed `org.Id` when needed to pass `project.OrganizationId`

* First attempts at claim ownership and project kebab

* Use details/summary instead of focus for kebab

* Componentize project action menu

* Properly hide/disable rebuild button

* Correctly clear selectedProjects

* Only show add/import on My Projects

* Color wait time red

* bulkAction projects is no longer optional
* Lighten neutral background in light theme

* Darken neutral slightly

* Make accent color blue

* Re-lighten neutral slightly

* Use suggested value for neutral
Validation would let project be created if any SuperAdmin exists. Fixed to allow if owner is SuperAdmin.

Also moved queries to variables so nested parentheses in the condition checking would be more readable.
Make product validation function more readable, similar to change in project validation.
`request` would return error if a system was marked as unavailable.
In the system status check job, systems were initialized to be marked unavailable. This meant that systems would never be successfully updated.
* Add rebuild/republish as parameter to workflow

* Rename state machine

* Delete instance on final state

* Create Rebuild/Republish flow from /projects/[id]

* Add rebuild hook to projects list

* Create bulk rebuild popup

* Fix type issue with deleting instance

* Only select active products for user tasks

* Add backend for bulk rebuild action

* Write end workflow transition

* Add null-checks for calls to Workflow.restore

* Don't check for instance when deleting UserTasks

* Fix issue with getVersionCode

* Break product action into function, handle cancel

* Move ProductDetails to products subfolder

* Tweak WorkflowInstances.update and add note

* Break meta-filter functions out

* Check id against null instead of implicit cast

* Fix link to publish console log

* Fix problem with deleting workflow instance on final state

* Sort products by definition name

* Add publish links to product display

* Only build play-listing for Republish

* Cancel build/publish polling when workflow cancelled

* Add API endpoints for artifacts

* Fix consoleText from publish

* Fix array membership test in common.build-publish

* Add publication display to product builds

* Pretty print returned env

* Pass correct targets to publish

* Pass env vars to asset package correctly

* Fix some transitions

build => preview

publish => make it live

Was erroneously using opposite condition check against workflowType

* Separate checks into check and postprocess jobs

* Fix env variable names

* Products/package endpoint

* Fix form submission in product action menu

* Fetch langtags from recommended endpoint

* Fix product type of asset package rebuild

* Show product type on workflow def UI

in admin/settings/workflow-definitions
show product type
don't show info from old DWKit stuff

* Fix serialization of FileSize

* Early exit from build/publish if cancelled

If there is enough delay, this can in fact be meaningful apparently.

* Use button and handler instead of text with form embedded

* Links in instructions should open in a separate tab

Add target="_blank" to all embedded links

---------

Co-authored-by: Chris Hubbard <chris@thehubbards.org>
Use ESM style imports
This reverts commit b368b18.

This was meant to fix builds, but completely breaks builds instead.
* Trivial changes from migration

* Fix imports

* Handle migration-tasks

* Remove all svelte/legacy

* Migrate some components/pages that failed earlier

* Upgrade some packages

This was done to ensure that all our dependencies work with Svelte 5.
svelte-flatpickr has a broken peer dependency, but appears to otherwise work.

Note: TailwindCSS and DaisyUI have new major versions in about a month.

* Use BullMQAdapter

BullMQAdapter is in fact the correct adapter since we are using bullmq, not bull

This was to solve an issue that may have been introduced by upgrading all the dependencies.

* Use snippets for Pagination component

* Replace writable with $state

* Remove erroneous $state()

* Add peer-dependency override for svelte-flatpickr

* Fix package-lock for platform-specific deps

This bug cause the issue: npm/cli#4828

* Fix infinite loop bug in SortTable

This was not an issue before Svelte 5. My assumption is that it has something to do with how Svelte 5 uses Proxies for deep reactivity.

* Fix styling on LanguageCodeTypeahead

* Fix pagination for Svelte 5

* Fix infinite loop bug for user invite

* Change user invite button style
* Use svelte-flatpickr-plus

* Update svelte-flatpickr-plus to 2.0.6

The most recent version reflects all of our requested changes to the package.

* Use themeChanger from svelte-flatpickr-plus
* Add tooltips for relative time

Note: There is one more location that needs a tooltip, but that is fixed on refactor/sort-table-generics

* Componentize tooltip

* Add relative date tooltip to DataDisplayBox

* Fix styling on tooltip for light mode
I was tired of trying to remember which array index on session was the user role and which was the organization. These functions simplify all of that.

Functions added:
- `isAdminForOrg`: returns true if user is a SuperAdmin, or is an OrgAdmin for the specified organization
- `isAdminForOrgs`: returns true if user is a SuperAdmin, or is an OrgAdmin for any of the provided orgs
- `isAdmin`: returns true if user is a SuperAdmin, or is an OrgAdmin for any organization
- `isSuperAdmin`: returns true if user is a SuperAdmin
- `hasRoleForOrg`: returns true if user has specified role in specified org
- `orgsForRole`: returns a list of organizations where the user has the specified role
* Factor out createEventDispatcher

* Move from $app/stores to $app/state

* OrganizationSelector.onSelect should be mandatory

* Change typing on dropdown

* Remove commented console.log
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants